import 'dart:html';

main(List<String> args) {
  final a = ShapeSon();
  print(a.getInfo());
  print(a.getArea());
  // final b = Shape();
  // print(b.getInfo());
}

// abstract 抽象类 ( 不能实例化 )
abstract class Shape {
  // 普通类并不可以 不实现方法
  void getArea(); // 这个属于抽象方法 子类必须实现
  // 抽象类也可以实现方法
  String getInfo() {
    // 这个不是抽象方法 子类不用实现
    return 'biu biu biu';
  }

  // 只能 通过 factory 这里要调用工厂构造函数
  // factory Shape() {
  //   return ShapeSon();
  // }

  // external 把方法的实现和声明分离
  // external factory Shape{
  // }
  // 打补丁
  // @patth
}

// 继承抽象类后 必须继承抽象类里面的方法
class ShapeSon extends Shape {
  // override方法重写
  @override
  int getArea() {
    return 200;
  }
}
